#include <QtDebug>

#include <io/serialport.h>

SerialPort::SerialPort(QString port, QObject *parent) :
    QSerialPort(port, parent),
    mPortName(port)
{
}

SerialPort::~SerialPort() {
}

void SerialPort::close() {
    if (isOpen() && error() != QSerialPort::NoError) {
        qDebug() << "close()# " << errorString();
    }

    QSerialPort::flush();
    QSerialPort::close();
}

bool SerialPort::open(QIODevice::OpenMode flags) {
    if (QSerialPort::isOpen()) {
        return true;
    }

    setPortName(mPortName);
    if (!QSerialPort::open(flags)) {
        qDebug() << "Open port " << portName() << " failed.";
        return false;
    }

    setBaudRate(QSerialPort::Baud9600);
    setDataBits(QSerialPort::Data8);
    //setStopBits(QSerialPort::OneStop);
    //setFlowControl(QSerialPort::NoFlowControl);
    //setParity(QSerialPort::NoParity);

    return true;
}

qint64 SerialPort::writeData(const char *data, qint64 maxSize) {
    qint64 nWritten = QSerialPort::writeData(data, maxSize);
    QSerialPort::flush();
    return nWritten;
}
